#include <bits/stdc++.h>
using namespace std;
const int N = 20005, M = 200005;

struct Node{
    int x, y, w;
    bool operator<(const Node &node) const{
        return w > node.w;
    }
};
int n, m;
Node node[M];
int b[N],fa[N];

int find(int x){
	if(fa[x]==x) return x;
	fa[x]=find(fa[x]);
	return fa[x];
}

void add(int x,int y)
{
	x=find(x);
	y=find(y);
	fa[x]=y;
}
int main(){
    scanf("%d%d", &n, &m);
    int x, y, w;
    for (int i = 0; i < m; i++){
        scanf("%d%d%d", &node[i].x,&node[i].y,&node[i].w);
    }
    memset(b,0,sizeof(b));
    sort(node,node+m);
    for(int i=1;i<=n;i++){
    	fa[i]=i;
	}
    for(int i=0;i<m;i++){
    	x=node[i].x;
		y=node[i].y;
    	if(find(x)==find(y)){
    		printf("%d",node[i].w);
    		return 0;
		}
		else{
			if(b[x]==0) b[x]=y;
			else add(y,b[x]);
			if(b[y]==0) b[y]=x;
			else add(x,b[y]);
		}
	}
	printf("0");
    return 0;
}
//18384995694
/*
4 6
1 4 2534
2 3 3512
1 2 28351
1 3 6618
2 4 1805
3 4 12884
*/
